인터넷 그룹 관리 프로토콜
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
인터넷 그룹 관리 프로토콜(IGMP)은 멀티캐스트 서비스를 제공하는 네트워크에서 호스트가 멀티캐스트 그룹에 가입하거나 탈퇴하도록 하는 데 사용되는 통신 프로토콜이다. IGMP는 네트워크 계층에서 작동하며, IGMP 스누핑과 PIM 등의 프로토콜과 함께 멀티캐스트 트래픽을 관리한다. IGMP는 IGMPv1, IGMPv2, IGMPv3 세 가지 버전이 있으며, 각 버전은 기능 개선과 하위 호환성을 제공한다. IGMP 메시지에는 쿼리, 보고서, 탈퇴 메시지 등이 있으며, IP 프로토콜 번호 2를 가진 IP 패킷으로 전송된다. IGMP는 서비스 거부 공격에 취약할 수 있어, 방화벽에서 차단하는 경우가 많다.
더 읽어볼만한 페이지
- 인터넷 계층 프로토콜 - IPv6
IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다. - 인터넷 계층 프로토콜 - IPv4
IPv4는 인터넷을 가능하게 하는 인터넷 프로토콜 제품군의 핵심 프로토콜로, 32비트 주소 체계를 사용하며 주소 낭비 문제 해결을 위해 CIDR 방식이 도입되었고, IPv4 주소 고갈 문제의 장기적인 해결책으로 IPv6가 개발되었다. - 네트워크 계층 프로토콜 - IPv6
IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다. - 네트워크 계층 프로토콜 - X.25
X.25는 CCITT가 1970년대 중반에 개발한 패킷 교환 데이터 통신 표준으로, 가상 회선 서비스 기반의 3계층 구조를 가지며 공중 데이터망의 기반이 되었으나 1990년대 초부터 프레임 릴레이와 TCP/IP로 대체되기 시작하여 현재는 일부 시스템 및 아마추어 무선 분야에서 사용된다. - 인터넷 표준 - DNSSEC
DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다. - 인터넷 표준 - IPv6
IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
인터넷 그룹 관리 프로토콜 | |
---|---|
개요 | |
이름 | 인터넷 그룹 관리 프로토콜 |
로마자 표기 | Internet Geurup Gwanri Peurotokol |
약자 | IGMP |
기능 | IPv4 네트워크에서 멀티캐스트 그룹 멤버십을 설정하기 위한 통신 프로토콜 |
계층 | 인터넷 계층 |
관련 프로토콜 | ICMP |
RFC | RFC 1112 RFC 2236 RFC 3376 RFC 4604 RFC 4605 RFC 5790 |
IP 프로토콜 버전 | IPv4 |
사용 포트 | 없음 (IP 프로토콜 4) |
상세 설명 | |
동작 방식 | 호스트와 라우터 간에 멀티캐스트 그룹 멤버십을 알림 |
메시지 종류 | 멤버십 쿼리 (Membership Query) 멤버십 리포트 (Membership Report) |
버전별 특징 | IGMPv1: 명시적인 "Leave Group" 메시지 없음 IGMPv2: "Leave Group" 메시지 추가, 쿼리 응답 시간 조정 IGMPv3: 소스-특정 멀티캐스트 (SSM) 지원, 그룹 멤버십 필터링 |
보안 고려 사항 | IGMP 메시지 스푸핑에 취약할 수 있음, GM 보안 필요 |
대안 프로토콜 | 멀티캐스트 리스너 디스커버리 (MLD, IPv6용) |
2. 구조
IGMP를 사용한 멀티캐스트 서비스를 제공하는 네트워크는 일반적으로 다음과 같은 구조를 갖는다.[1]
IGMP에는 세 가지 버전이 있다.[6]
호스트는 IGMP를 사용하여 로컬 멀티캐스트 라우터에게 특정 멀티캐스트 그룹에 가입하거나 탈퇴할 것을 요청한다. 스위치는 IGMP 스누핑을 통해 IGMP 트래픽을 모니터링하여 멀티캐스트 트래픽을 효율적으로 전달한다. 프로토콜 독립 멀티캐스트(PIM)는 로컬 및 원격 멀티캐스트 라우터 간에 멀티캐스트 트래픽을 라우팅하는 데 사용된다.[1]
IGMP는 네트워크 계층(계층 3)에서 작동하며, ICMP와 같은 다른 네트워크 관리 프로토콜과 동일하다. IGMP 프로토콜은 호스트와 라우터 내에서 구현된다. 호스트는 로컬 라우터를 통해 그룹 멤버십을 요청하는 반면, 라우터는 이러한 요청을 수신하고 주기적으로 가입 쿼리를 전송한다. 서브넷당 하나의 라우터가 이 쿼리 기능을 수행하도록 선출된다. 일부 멀티레이어 스위치는 IGMP 스누핑 기능이 계층 2 네트워크에서 IGMP 지원 라우터가 없는 경우에도 작동하도록 허용하는 IGMP 쿼어 기능을 포함한다.
수신 측 호스트는 참가할 그룹의 주소를 IGMP 패킷을 통해 가장 가까운 라우터로 통지한다. 송신 측 호스트는 자신의 유니캐스트 주소 발신, 그룹 주소 수신의 패킷을 가장 가까운 라우터로 UDP 등을 통해 전송한다. 라우터는 그룹에 참가한 호스트가 속한 네트워크(LAN 세그먼트) 전체에 패킷이 전달되도록 패킷을 전송하며, 구체적인 라우터 간 전송 경로는 프로토콜 독립 멀티캐스트나 DVMRP 등의 프로토콜에 의해 관리된다.
수신 측 라우터에서 호스트 사이의 L2 스위치는 그룹 주소로의 패킷을 브로드캐스트한다. 단, IGMP 스누핑이 가능한 L2 스위치는 그룹에 참가하고 있는 호스트가 있는 노드로만 패킷을 전송하여 불필요한 대역폭 낭비를 막을 수 있다.
IGMP는 일부 공격에 취약하며,[2][3][4][5] 방화벽은 일반적으로 필요하지 않은 경우 사용자가 이를 비활성화할 수 있도록 허용한다.
3. 버전
IGMPv1은 1989년에 정의되었다. IGMPv1은 질의-응답 모델을 사용한다. 질의는 224.0.0.1로 전송된다. 멤버십 보고서는 그룹의 멀티캐스트 주소로 전송된다.
1997년에 정의된 IGMPv2는 호스트가 멀티캐스트 그룹을 탈퇴하고자 하는 의사를 신호할 수 있는 기능을 추가하여 IGMPv1을 개선했다. 그룹 탈퇴 프로세스를 가속화하고 다른 시간 초과 값을 조정한다. 그룹 탈퇴 메시지는 224.0.0.2로 전송된다. 그룹별 질의가 도입되었다. 그룹별 질의는 그룹의 멀티캐스트 주소로 전송된다. 라우터가 네트워크에 대한 IGMP 쿼리어를 선택하는 방법이 도입되었다.
2002년에 IGMPv3는 소스별 멀티캐스트를 지원하여 IGMPv2를 개선했고, 멤버십 보고 집계를 도입했다. 소스별 멀티캐스트에 대한 지원은 2006년에 개선되었다. IGMPv3는 소스별 멀티캐스트 기능을 도입한다. 멤버십 보고서는 224.0.0.22로 전송된다. 2011년 현재 IGMPv3가 최신 규격이다. IGMPv3에서는 지정된 IP 주소로부터만 멀티캐스트를 수신하는 방법 (PIM-SSM 지원) 등이 추가되었다.
3. 1. 하위 호환성
IGMP에는 세 가지 버전이 있다.[6] IGMPv3를 지원하는 라우터는 IGMPv1, IGMPv2 및 IGMPv3를 실행하는 클라이언트를 지원할 수 있어 하위 호환성을 유지한다. IGMPv1은 질의-응답 모델을 사용하며, 질의는 224.0.0.1로 전송되고, 멤버십 보고서는 그룹의 멀티캐스트 주소로 전송된다. IGMPv2는 그룹 탈퇴 프로세스를 가속화하고 다른 시간 초과 값을 조정하며, 그룹 탈퇴 메시지는 224.0.0.2로 전송된다. 또한 그룹별 질의가 도입되어 그룹의 멀티캐스트 주소로 전송되며, 라우터가 네트워크에 대한 IGMP 쿼리어를 선택하는 방법이 도입되었다. IGMPv3는 소스별 멀티캐스트 기능을 도입하고, 멤버십 보고서는 224.0.0.22로 전송된다.[6]
4. 메시지
- 일반 멤버십 쿼리: 멀티캐스트 라우터가 네트워크에 연결된 시스템이 어떤 멀티캐스트 주소에 관심을 가지고 있는지 확인하기 위해 전송하며, 네트워크의 모든 시스템에 대한 그룹 멤버십 상태를 새로 고친다.
- 그룹별 멤버십 쿼리: 특정 멀티캐스트 주소에 대한 수신 상태를 확인하는 데 사용된다.
- 그룹 및 소스별 쿼리: 라우터가 유니캐스트 주소 목록에 지정된 소스 주소에서 멀티캐스트 그룹으로 전송된 메시지를 수신하려는 시스템이 있는지 확인하도록 한다.
- 멤버십 보고서: 멤버십 쿼리에 대한 응답으로 또는 멀티캐스트 그룹에 처음 등록할 때 비동기적으로 멀티캐스트 수신자가 전송한다.
- 그룹 나가기 메시지: 지정된 멀티캐스트 전송이 더 이상 수신기에서 필요하지 않을 때 멀티캐스트 수신자가 전송한다.
IGMP 메시지는 IP 프로토콜 번호 2를 가진 베어 IP 패킷으로 전송된다.[10] 인터넷 제어 메시지 프로토콜과 마찬가지로 IGMP 메시징에는 전송 계층이 사용되지 않는다.[10]
IGMP에서 정의되는 패킷은 세 종류이다.[10]
- '''Membership Query''' (Type 0x11): 호스트가 멀티캐스트 그룹에 참여할 때 라우터로 전송된다. 참여하고 있는 그룹의 최신 상태를 알고 싶을 때에도 전송된다.
- '''Membership Report''' (Type 0x12 (IGMPv1), Type 0x16 (v2), Type 0x22 (v3)): Membership Query나 Leave Group의 응답으로, 호스트가 참여하고 있는 그룹의 상태를 라우터가 통지하는 패킷.
- '''Leave Group''' (Type 0x17): 그룹에서 탈퇴함을 라우터에 통지하는 패킷.
4. 1. 일반 멤버십 쿼리 (General Membership Query)
4. 2. 그룹별 멤버십 쿼리 (Group-Specific Membership Query)
4. 3. 그룹 및 소스별 쿼리 (Group-and-Source-Specific Query)
라우터는 특정 소스에서 특정 멀티캐스트 그룹으로 전송된 메시지를 수신하려는 시스템이 있는지 확인한다. IGMPv3 멤버십 쿼리 패킷에서 64비트 이후는 IGMPv3 이후에 새로 추가되었다.특정 호스트가 전송하는 멀티캐스트 패킷만 수신하려는 경우, 그룹 주소에 PIM-SSM용 글로벌 주소로 할당된 범위 내에서 IP 주소를 하나 지정하고, 소스 주소에 송신 호스트의 IP 주소를 지정한다. 이 기능과 PIM-SSM을 병용하면, 호스트마다 그룹 주소를 미리 할당하지 않고도, 희소 멀티캐스팅(네트워크 노드 수에 비해, 멀티캐스트 채널 하나당 수신 노드가 적은 경우)에서도 효율적인 전송이 가능하다.
이 기능을 사용하지 않는 경우, 소스 주소 수에 0을 지정한다. 이 경우, 참여하는 그룹 주소로의 패킷은 송신 호스트에 관계없이 모든 패킷이 수신된다.
4. 4. 멤버십 보고 (Membership Report)
호스트가 멤버십 쿼리에 응답하거나 멀티캐스트 그룹에 처음 가입할 때 멤버십 보고를 전송한다.비트 오프셋 | 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 패킷 타입 | 예약 영역 (0) | 체크섬 | |||||||||||||||||||||||||||||
32 | 예약 영역 (0) | 호스트가 참가하고 있는 그룹의 수 (N) | ||||||||||||||||||||||||||||||
64 | 그룹[1]의 참가 상태 | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
그룹[2]의 참가 상태 | ||||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
그룹[N]의 참가 상태 | ||||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
4. 5. 그룹 나가기 메시지 (Leave Group Message)
호스트가 특정 멀티캐스트 그룹에서 탈퇴할 때 그룹 나가기 메시지를 전송한다. 이 메시지는 IGMP Leave Group 패킷으로 구성되며, 패킷 유형은 0x17이다. 패킷에는 응답 시간 제한, 체크섬, 그룹 주소 등의 정보가 포함된다.```wikitable
bit offset | 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 패킷 유형 (0x17) | 응답 시간 제한 | 체크섬 | |||||||||||||||||||||||||||||
32 | 그룹 주소 |
5. 프로토콜 상세
IGMP 메시지는 IP 프로토콜 번호 2를 가진 IP 패킷으로 전송된다. 인터넷 제어 메시지 프로토콜과 마찬가지로 IGMP 메시징에는 전송 계층이 사용되지 않는다.
5. 1. IGMPv2 메시지 형식
IGMPv2 메시지는 RFC 2236에 정의되어 있다.8 비트 | 8 비트 | 16 비트 |
---|---|---|
유형 | 최대 응답 시간 | 체크섬 |
32 비트 | ||
그룹 주소 |
- '''유형''': 다음과 같이 메시지 유형을 나타낸다.
메시지 | 유형 값 |
---|---|
멤버십 쿼리 | 0x11 |
IGMPv1 멤버십 보고 | 0x12 |
IGMPv2 멤버십 보고 | 0x16 |
IGMPv3 멤버십 보고 | 0x22 |
그룹 나가기 | 0x17 |
- '''최대 응답 시간''': 최대 응답 시간 필드는 8비트이다. 멤버십 쿼리(0x11)에 대한 응답의 응답성을 지정한다. 이 필드는 멤버십 쿼리에서만 의미가 있으며, 다른 메시지에서는 0으로 설정되고 수신자에게 무시된다. 이 필드는 0.1초 단위의 시간을 지정한다(필드 값 10은 1초를 지정). 값이 클수록 IGMP 트래픽 버스트가 감소하고, 값이 작을수록 마지막 호스트가 그룹을 떠날 때 프로토콜 응답성이 향상된다.
- '''체크섬''': 체크섬은 전체 IGMP 메시지의 1의 보수 합의 16비트 1의 보수이다. 이 필드를 0으로 설정한 상태로 전송하기 전에 계산된다. 패킷 수신 시 다시 계산될 때 이 필드가 포함되며, 결과는 0이어야 한다.
- '''그룹 주소''': 그룹별 또는 그룹 및 소스별 쿼리를 보낼 때 쿼리되는 멀티캐스트 주소이다. 일반 쿼리를 보낼 때는 필드가 0으로 설정된다.
이 메시지는 다음 IP 멀티캐스트 주소로 전송된다.
메시지 유형 | 멀티캐스트 주소 |
---|---|
일반 쿼리 | 모든 호스트 (224.0.0.1) |
그룹별 쿼리 | 쿼리되는 그룹 |
멤버십 보고 (모든 IGMP 버전) | 보고되는 그룹 |
그룹 나가기 | 모든 라우터 (224.0.0.2) |
5. 1. 1. 유형 (Type)
다음과 같이 메시지 유형을 나타낸다.메시지 | 유형 값 |
---|---|
멤버십 쿼리 | 0x11 |
IGMPv1 멤버십 보고 | 0x12 |
IGMPv2 멤버십 보고 | 0x16 |
IGMPv3 멤버십 보고 | 0x22 |
그룹 나가기 | 0x17 |
5. 1. 2. 최대 응답 시간 (Max Response Time)
최대 응답 시간 필드는 8비트이다. 멤버십 쿼리(0x11)에 대한 응답의 응답성을 지정한다. 이 필드는 멤버십 쿼리에서만 의미가 있으며, 다른 메시지에서는 0으로 설정되고 수신자에게 무시된다. 이 필드는 0.1초 단위의 시간을 지정한다(필드 값 10은 1초를 지정). 값이 클수록 IGMP 트래픽 버스트가 감소하고, 값이 작을수록 마지막 호스트가 그룹을 떠날 때 프로토콜 응답성이 향상된다.5. 1. 3. 체크섬 (Checksum)
체크섬은 전체 IGMP 메시지의 1의 보수 합의 16비트 1의 보수이다. 이 필드를 0으로 설정한 상태로 전송하기 전에 계산된다. 패킷 수신 시 다시 계산될 때 이 필드가 포함되며, 결과는 0이어야 한다.5. 1. 4. 그룹 주소 (Group Address)
그룹별 또는 그룹 및 소스별 쿼리를 보낼 때 쿼리되는 멀티캐스트 주소이다. 일반 쿼리를 보낼 때는 필드가 0으로 설정된다.이 메시지는 다음 IP 멀티캐스트 주소로 전송된다.
메시지 유형 | 멀티캐스트 주소 |
---|---|
일반 쿼리 | 모든 호스트 (224.0.0.1) |
그룹별 쿼리 | 쿼리되는 그룹 |
멤버십 보고 (모든 IGMP 버전) | 보고되는 그룹 |
그룹 나가기 | 모든 라우터 (224.0.0.2) |
5. 2. IGMPv3 멤버십 쿼리 메시지 형식
IGMPv3 멤버십 쿼리 메시지는 RFC 3376에 정의되어 있다.비트 오프셋 | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 패킷 유형 (0x11) | 최대 응답 코드 | 체크섬 | |||||||||||||||||||||||||||||
32 | 그룹 주소 | |||||||||||||||||||||||||||||||
64 | 예약됨 | S | QRV | QQIC | 소스 수 (N) | |||||||||||||||||||||||||||
96 | 소스 주소 [1] | |||||||||||||||||||||||||||||||
128 | 소스 주소 [2] | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
소스 주소 [n] |
== 유형 (Type) ==
패킷의 유형은 8비트이며, 0x11 값은 ''IGMPv3 멤버십 쿼리''를 나타낸다.
== 최대 응답 코드 (Max Resp Code) ==
이 필드는 응답 보고서를 보내기 전에 허용되는 최대 응답 시간(1/10초 단위)을 계산하는 데 사용된다. 숫자가 128 미만이면 해당 값이 직접 사용된다. 값이 128 이상이면 지수와 가수으로 해석된다.
== 체크섬 (Checksum) ==
체크섬은 전체 IGMP 메시지의 1의 보수 합의 16비트 1의 보수이다. 이 필드를 0으로 설정하여 전송하기 전에 계산한다. 패킷 수신 시 다시 계산할 때 이 필드가 포함되며 결과는 0이어야 한다.
== 그룹 주소 (Group Address) ==
이것은 그룹별 또는 그룹-및-소스별 쿼리를 보낼 때 쿼리되는 멀티캐스트 주소이다. 일반 쿼리를 보낼 때는 이 필드가 0으로 설정된다.
== 예약됨 (Reserved) ==
이 필드는 예약되어 있으며, 전송 시에는 0으로 설정하고 수신 시에는 무시해야 한다.
== S (Suppress Router-side Processing) 플래그 ==
S (Suppress Router-side Processing, 라우터 측 처리 억제) 플래그는 1비트 크기로, 이 플래그가 설정되면 수신 라우터에 일반 타이머 업데이트를 억제하도록 지시한다.
== QRV (Querier's Robustness Variable) ==
이 값(Querier's Robustness Variable, 쿼리 수행자의 견고성 변수)이 0이 아니면 쿼리 수행자가 쿼리에 사용하는 견고성 변수 값이 포함된다. 라우터는 값이 0이 아닌 한 가장 최근에 수신된 쿼리에 일치하도록 견고성 변수를 업데이트해야 한다.
== QQIC (Querier's Query Interval Code) ==
이 코드(Querier's Query Interval Code, 쿼리 수행자의 쿼리 간격 코드)는 쿼리 수행자가 사용하는 쿼리 간격 값(초)을 지정하는 데 사용된다. 숫자가 128 미만이면 해당 값이 직접 사용된다. 값이 128 이상이면 지수와 가수으로 해석된다.
== 소스 수 (Number of Sources) ==
이 필드는 쿼리에 있는 소스 주소 수를 지정한다. 일반 및 그룹별 쿼리의 경우 이 값은 0이다. 그룹-및-소스별 쿼리의 경우 이 값은 0이 아니지만 네트워크의 MTU로 제한된다.
== 소스 주소 (Source Address) ==
소스 주소 [i] 필드는 n개의 IP 유니캐스트 주소 벡터이며, n은 소스 수(N) 필드의 값이다.
특정 호스트가 전송하는 멀티캐스트 패킷만 수신하려는 경우, 그룹 주소에 PIM-SSM용 글로벌 주소로 할당된 범위 내에서 IP 주소를 하나 지정하고, 소스 주소에 송신 호스트의 IP 주소를 지정한다. 이 기능과 PIM-SSM을 병용하면, 호스트마다 그룹 주소를 미리 할당하지 않고도, 희소 멀티캐스팅(네트워크 노드 수에 비해, 멀티캐스트 채널 하나당 수신 노드가 적은 경우)에서도 효율적인 전송이 가능하다.
이 기능을 사용하지 않는 경우, 소스 주소 수에 0을 지정한다. 이 경우, 참여하는 그룹 주소로의 패킷은 송신 호스트에 관계없이 모든 패킷이 수신된다.
5. 2. 1. 유형 (Type)
패킷의 유형은 8비트이며, 0x11 값은 ''IGMPv3 멤버십 쿼리''를 나타낸다.IGMPv3 멤버십 쿼리 패킷의 구조는 다음과 같다.
비트 오프셋 | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Packet Type영어 (0x11) | 응답 시간 제한 | 체크섬 | |||||||||||||||||||||||||||||
32 | 그룹 주소 | |||||||||||||||||||||||||||||||
64 | 예약 영역 (0) | S | QRV | QQIC | 소스 주소 수 (N) | |||||||||||||||||||||||||||
96 | 소스 주소 [1] | |||||||||||||||||||||||||||||||
128 | 소스 주소 [2] | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
소스 주소 [N] |
64비트 이후는 IGMPv3 이후에 새로 추가되었다.
특정 호스트가 전송하는 멀티캐스트 패킷만 수신하려는 경우, 그룹 주소에 PIM-SSM용 글로벌 주소로 할당된 범위 내에서 IP 주소를 하나 지정하고, 소스 주소에 송신 호스트의 IP 주소를 지정한다. 이 기능과 PIM-SSM을 병용하면, 호스트마다 그룹 주소를 미리 할당하지 않고도, 희소 멀티캐스팅(네트워크 노드 수에 비해, 멀티캐스트 채널 하나당 수신 노드가 적은 경우)에서도 효율적인 전송이 가능하다.
이 기능을 사용하지 않는 경우, 소스 주소 수에 0을 지정한다. 이 경우, 참여하는 그룹 주소로의 패킷은 송신 호스트에 관계없이 모든 패킷이 수신된다.
5. 2. 2. 최대 응답 코드 (Max Resp Code)
이 필드는 응답 보고서를 보내기 전에 허용되는 최대 응답 시간(1/10초 단위)을 계산하는 데 사용된다. 숫자가 128 미만이면 해당 값이 직접 사용된다. 값이 128 이상이면 지수와 가수으로 해석된다.5. 2. 3. 체크섬 (Checksum)
체크섬은 전체 IGMP 메시지의 1의 보수 합의 16비트 1의 보수이다. 이 필드를 0으로 설정하여 전송하기 전에 계산한다. 패킷 수신 시 다시 계산할 때 이 필드가 포함되며 결과는 0이어야 한다.5. 2. 4. 그룹 주소 (Group Address)
이것은 그룹별 또는 그룹-및-소스별 쿼리를 보낼 때 쿼리되는 멀티캐스트 주소이다. 일반 쿼리를 보낼 때는 이 필드가 0으로 설정된다.특정 호스트가 전송하는 멀티캐스트 패킷만 수신하려는 경우, 그룹 주소에 PIM-SSM용 글로벌 주소로 할당된 범위 내에서 IP 주소를 하나 지정하고, 소스 주소에 송신 호스트의 IP 주소를 지정한다. 이 기능과 PIM-SSM을 병용하면, 호스트마다 그룹 주소를 미리 할당하지 않고도, 희소 멀티캐스팅(네트워크 노드 수에 비해, 멀티캐스트 채널 하나당 수신 노드가 적은 경우)에서도 효율적인 전송이 가능하다.
이 기능을 사용하지 않는 경우, 소스 주소 수에 0을 지정한다. 이 경우, 참여하는 그룹 주소로의 패킷은 송신 호스트에 관계없이 모든 패킷이 수신된다.
5. 2. 5. S (Suppress Router-side Processing) 플래그
S (Suppress Router-side Processing, 라우터 측 처리 억제) 플래그는 1비트 크기로, 이 플래그가 설정되면 수신 라우터에 일반 타이머 업데이트를 억제하도록 지시한다.5. 2. 6. QRV (Querier's Robustness Variable)
이 값이 0이 아니면 쿼리 수행자가 쿼리에 사용하는 견고성 변수 값이 포함된다. 라우터는 값이 0이 아닌 한 가장 최근에 수신된 쿼리에 일치하도록 견고성 변수를 업데이트해야 한다.비트 오프셋 | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 패킷 유형 (0x11) | 응답 시간 제한 | 체크섬 | |||||||||||||||||||||||||||||
32 | 그룹 주소 | |||||||||||||||||||||||||||||||
64 | 예약 영역 (0) | S | QRV | QQIC | 소스 주소 수 (N) | |||||||||||||||||||||||||||
96 | 소스 주소 [1] | |||||||||||||||||||||||||||||||
128 | 소스 주소 [2] | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
소스 주소 [N] |
5. 2. 7. QQIC (Querier's Query Interval Code)
이 코드는 쿼리 수행자가 사용하는 쿼리 간격 값(초)을 지정하는 데 사용된다. 숫자가 128 미만이면 해당 값이 직접 사용된다. 값이 128 이상이면 지수와 가수으로 해석된다.비트 오프셋 | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
64 | 예약 영역 (0) | S | QRV | QQIC | 소스 주소 수 (N) |
5. 2. 8. 소스 수 (Number of Sources)
이 필드는 쿼리에 있는 소스 주소 수를 지정한다. 일반 및 그룹별 쿼리의 경우 이 값은 0이다. 그룹-및-소스별 쿼리의 경우 이 값은 0이 아니지만 네트워크의 MTU로 제한된다.특정 호스트가 전송하는 멀티캐스트 패킷만 수신하려는 경우, 그룹 주소에 PIM-SSM용 글로벌 주소로 할당된 범위 내에서 IP 주소를 하나 지정하고, 소스 주소에 송신 호스트의 IP 주소를 지정한다. 이 기능과 PIM-SSM을 병용하면, 호스트마다 그룹 주소를 미리 할당하지 않고도, 희소 멀티캐스팅(네트워크 노드 수에 비해, 멀티캐스트 채널 하나당 수신 노드가 적은 경우)에서도 효율적인 전송이 가능하다.
이 기능을 사용하지 않는 경우, 소스 주소 수에 0을 지정한다. 이 경우, 참여하는 그룹 주소로의 패킷은 송신 호스트에 관계없이 모든 패킷이 수신된다.
5. 2. 9. 소스 주소 (Source Address)
소스 주소 [i] 필드는 n개의 IP 유니캐스트 주소 벡터이며, n은 소스 수(N) 필드의 값이다. 이 필드는 쿼리에 있는 소스 주소 수를 나타낸다. 일반 및 그룹별 쿼리의 경우 이 값은 0이다. 그룹-및-소스별 쿼리의 경우 이 값은 0이 아니지만 네트워크의 MTU로 제한된다.특정 호스트가 전송하는 멀티캐스트 패킷만 수신하려는 경우, 그룹 주소에 PIM-SSM용 글로벌 주소로 할당된 범위 내에서 IP 주소를 하나 지정하고, 소스 주소에 송신 호스트의 IP 주소를 지정한다. 이 기능과 PIM-SSM을 병용하면, 호스트마다 그룹 주소를 미리 할당하지 않고도, 희소 멀티캐스팅(네트워크 노드 수에 비해, 멀티캐스트 채널 하나당 수신 노드가 적은 경우)에서도 효율적인 전송이 가능하다.
이 기능을 사용하지 않는 경우, 소스 주소 수에 0을 지정한다. 이 경우, 참여하는 그룹 주소로의 패킷은 송신 호스트에 관계없이 모든 패킷이 수신된다.
비트 오프셋 | 16–31 | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
64 | 소스 주소 수 (N) | |||||||||||||||||||||||||||||||
96 | 소스 주소 [1] | |||||||||||||||||||||||||||||||
128 | 소스 주소 [2] | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
소스 주소 [N] |
6. 구현
FreeBSD,[8] 리눅스,[9] 윈도우 등은 모두 호스트 측에서 IGMP를 지원하는 운영 체제이다. mrouted (리눅스), XORP, Quagga 등은 라우터 측 IGMP를 지원하는 라우팅 프로그램이다.
7. 보안
IGMP는 널리 보급되지 않았고, 과거 윈도우에서 서비스 거부 공격에 이용될 수 있는 취약점이 발견된 적이 있다.[11][12][13] IGMP에는 인증 기구가 없기 때문에, 공격자가 멀티캐스트를 이용하여 대역을 점유하는 서비스 거부 공격을 할 우려가 있다.[14] 이러한 이유로, 방화벽에서는 기본적으로 IGMP에 의한 통신을 허용하지 않는 설정으로 되어 있는 경우가 많다.
한국의 경우, 정보통신망 이용촉진 및 정보보호 등에 관한 법률에 따라 네트워크 보안 강화를 위한 노력이 이루어지고 있으며, IGMP 관련 보안 취약점에 대한 대응도 중요한 과제 중 하나이다. 특히, 더불어민주당은 사이버 보안 강화 및 개인 정보 보호를 주요 정책으로 추진하고 있으며, IGMP 보안 문제 해결에도 관심을 기울일 것으로 예상된다.
참조
[1]
서적
Data Communications and Networking
McGraw-Hill
2012
[2]
웹사이트
IGMP report denial of service
http://www.securityf[...]
[3]
웹사이트
Fragmented IGMP Packet May Promote "Denial of Service" Attack
http://support.micro[...]
2004-12-20
[4]
웹사이트
IGMP Security Problem Statement and Requirements
http://www.securemul[...]
[5]
웹사이트
Vulnerability in TCP/IP Could Allow Denial of Service (MS06-007, 913446))
http://www.microsoft[...]
2006-02-14
[6]
간행물
IP Multicast Routing Configuration Guide
https://www.cisco.co[...]
Cisco
2017-05-27
[7]
웹사이트
Internet Group Management Protocol Overview
http://www.javvin.co[...]
Javvin
2010-11-18
[8]
문서
IGMPv3 was added to FreeBSD in version 8.0.
[9]
문서
IGMPv3 was added in the Linux 2.5 kernel series.
[10]
문서
RFC 1112, RFC 2236, RFC 3376, RFC 4604
https://www.ietf.org[...]
[11]
웹사이트
IGMP report denial of service
http://www.securityf[...]
[12]
웹사이트
Fragmented IGMP packet
http://support.micro[...]
[13]
뉴스
Vulnerability in TCP/IP Could Allow Denial of Service (913446)
http://www.microsoft[...]
Microsoft Security Bulletin MS06-007
[14]
웹사이트
IGMP Security Problem Statement and Requirements
http://www.securemul[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com